package com.glink.manage.service;

import com.glink.manage.domain.BlacklistBean;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @author  qiushaoshan
 * @since  2025-01-15
 */
public interface BlacklistService extends IService<BlacklistBean> {

    /**
     * 根据类型查询黑名单信息
     * @param type 类型ID
     * @return 黑名单列表
     */
    List<String> findIdNumberByType(String type);

    /**
     * 保存黑名单
     * @param idNumber 证件照
     * @param type 类型 BaseCodeConstants.CodeType_ApprovalFormType
     * @param userName 用户名称
     * @param sourceObjId 源数据ID，基于哪条数据创建的黑名单，便于黑名单分页查询
     * @return 保存状态
     */
    Boolean saveByIdNumberAndTypeAndUserName(String idNumber, String type, String userName, String sourceObjId,String actionType,String reason);

    /**
     * 删除黑名单
     * @param idNumber 证件照
     * @param type 类型 BaseCodeConstants.CodeType_ApprovalFormType
     * @return 删除状态
     */
    Boolean delByIdNumberAndType(String idNumber, String type);

    /**
     * 校验是否是黑命大
     * @param idNumber 证件照
     * @param type 类型 BaseCodeConstants.CodeType_ApprovalFormType
     * @return 状态
     */
    boolean checkBlackListByIdNumberAndType(String idNumber, String type);

    /**
     * 根据类型查询黑名单信息
     * @param type 类型ID
     * @return 黑名单列表
     */
    List<String> findSourceIdListByType(String type);

    /**
     * 查询黑名单
     * @param idNumberList ID
     * @param type 类型
     * @return 黑名单信息
     */
    List<String> findBlacklistByIdNumberInAndType(List<String> idNumberList, String type);

    /**
     * 查询加入黑名单原因
     * @param idNumber 证件
     * @param type 类型
     * @return 原因
     */
    String findReasonByIdNumberAndType(String idNumber, String type);
}
